package com.panda.mall.common.mallOrder.entity;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Size;
import javax.validation.constraints.NotNull;

import java.io.Serializable;

import java.math.BigDecimal;
import java.util.Date;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.panda.mall.common.base.BaseEntity;
import io.swagger.annotations.ApiModelProperty;
import lombok.*;
import org.hibernate.validator.constraints.Length;

/**
* 订单信息表
* mall_order
*/
@EqualsAndHashCode(callSuper = true)
@Data
@AllArgsConstructor
@NoArgsConstructor
@TableName("mall_order")
public class MallOrder extends BaseEntity implements Serializable {

    /**
    * 订单id
    */
    @NotNull(message="[订单id]不能为空")
    @ApiModelProperty("订单id")
    private Long id;
    /**
    * 订单编号
    */
    @NotBlank(message="[订单编号]不能为空")
    @Size(max= 40,message="编码长度不能超过40")
    @ApiModelProperty("订单编号")
    @Length(max= 40,message="编码长度不能超过40")
    private String orderNumber;
    /**
    * 会员id
    */
    @NotNull(message="[会员id]不能为空")
    @ApiModelProperty("会员id")
    private Long userId;
    /**
    * 会员姓名
    */
    @Size(max= 40,message="编码长度不能超过40")
    @ApiModelProperty("会员姓名")
    @Length(max= 40,message="编码长度不能超过40")
    private String userName;
    /**
    * 优惠券id
    */
    @ApiModelProperty("优惠券id")
    private Long couponId;
    /**
    * 订单总额
    */
    @ApiModelProperty("订单总额")
    private BigDecimal totalPrice;
    /**
    * 应付金额
    */
    @ApiModelProperty("应付金额")
    private BigDecimal payPrice;
    /**
    * 运输费用
    */
    @ApiModelProperty("运输费用")
    private BigDecimal transportPrice;
    /**
    * 促销减额
    */
    @ApiModelProperty("促销减额")
    private BigDecimal promotionPrice;
    /**
    * 积分减额
    */
    @ApiModelProperty("积分减额")
    private BigDecimal integralPrice;
    /**
    * 优惠减额
    */
    @ApiModelProperty("优惠减额")
    private BigDecimal couponPrice;
    /**
    * 支付方式（1-支付宝，2-微信，3-银联，4-货到付款）
    */
    @ApiModelProperty("支付方式（1-支付宝，2-微信，3-银联，4-货到付款）")
    private Integer payType;
    /**
    * 订单来源（1-PC端，2-APP端）
    */
    @ApiModelProperty("订单来源（1-PC端，2-APP端）")
    private Integer sourceType;
    /**
    * 订单状态（0-待付款，1-代发货，2-已发货，3-已完成，4-已关闭，5-无效）
    */
    @ApiModelProperty("订单状态（0-待付款，1-代发货，2-已发货，3-已完成，4-已关闭，5-无效）")
    private Integer orderStatus;
    /**
    * 物流公司
    */
    @Size(max= 255,message="编码长度不能超过255")
    @ApiModelProperty("物流公司")
    @Length(max= 255,message="编码长度不能超过255")
    private String deliveryCompany;
    /**
    * 物流编号
    */
    @Size(max= 40,message="编码长度不能超过40")
    @ApiModelProperty("物流编号")
    @Length(max= 40,message="编码长度不能超过40")
    private String deliveryNumber;
    /**
    * 发货地址
    */
    @Size(max= 255,message="编码长度不能超过255")
    @ApiModelProperty("发货地址")
    @Length(max= 255,message="编码长度不能超过255")
    private String deliveryAddress;
    /**
    * 自动确认天数
    */
    @ApiModelProperty("自动确认天数")
    private Integer automaticConfirm;
    /**
    * 订单积分
    */
    @ApiModelProperty("订单积分")
    private Integer orderIntegral;
    /**
    * 订单成长值
    */
    @ApiModelProperty("订单成长值")
    private Integer orderGrowth;
    /**
    * 发票类型（0-不开发票，1-电子发票，2-纸质发票）
    */
    @ApiModelProperty("发票类型（0-不开发票，1-电子发票，2-纸质发票）")
    private Integer billType;
    /**
    * 发票内容
    */
    @Size(max= 255,message="编码长度不能超过255")
    @ApiModelProperty("发票内容")
    @Length(max= 255,message="编码长度不能超过255")
    private String billContent;
    /**
    * 发票抬头
    */
    @Size(max= 255,message="编码长度不能超过255")
    @ApiModelProperty("发票抬头")
    @Length(max= 255,message="编码长度不能超过255")
    private String billHeader;
    /**
    * 收票人电话
    */
    @Size(max= 40,message="编码长度不能超过40")
    @ApiModelProperty("收票人电话")
    @Length(max= 40,message="编码长度不能超过40")
    private String billReceiverPhone;
    /**
    * 收票人邮箱
    */
    @Size(max= 40,message="编码长度不能超过40")
    @ApiModelProperty("收票人邮箱")
    @Length(max= 40,message="编码长度不能超过40")
    private String billReceiverEmail;
    /**
    * 收货人姓名
    */
    @Size(max= 40,message="编码长度不能超过40")
    @ApiModelProperty("收货人姓名")
    @Length(max= 40,message="编码长度不能超过40")
    private String receiverName;
    /**
    * 收货人电话
    */
    @Size(max= 40,message="编码长度不能超过40")
    @ApiModelProperty("收货人电话")
    @Length(max= 40,message="编码长度不能超过40")
    private String receiverPhone;
    /**
    * 收货人邮编
    */
    @Size(max= 40,message="编码长度不能超过40")
    @ApiModelProperty("收货人邮编")
    @Length(max= 40,message="编码长度不能超过40")
    private String receiverPostalCode;
    /**
    * 收货省份
    */
    @Size(max= 40,message="编码长度不能超过40")
    @ApiModelProperty("收货省份")
    @Length(max= 40,message="编码长度不能超过40")
    private String receiverProvince;
    /**
    * 收货城市
    */
    @Size(max= 40,message="编码长度不能超过40")
    @ApiModelProperty("收货城市")
    @Length(max= 40,message="编码长度不能超过40")
    private String receiverCity;
    /**
    * 收货区县
    */
    @Size(max= 40,message="编码长度不能超过40")
    @ApiModelProperty("收货区县")
    @Length(max= 40,message="编码长度不能超过40")
    private String receiverRegion;
    /**
    * 详细地址
    */
    @Size(max= 255,message="编码长度不能超过255")
    @ApiModelProperty("详细地址")
    @Length(max= 255,message="编码长度不能超过255")
    private String receiverAddress;
    /**
    * 订单备注
    */
    @Size(max= 500,message="编码长度不能超过500")
    @ApiModelProperty("订单备注")
    @Length(max= 500,message="编码长度不能超过500")
    private String remarks;
    /**
    * 收货状态（0-否，1-是）
    */
    @ApiModelProperty("收货状态（0-否，1-是）")
    private Integer confirmStatus;
    /**
    * 支付积分
    */
    @ApiModelProperty("支付积分")
    private Integer payIntegral;
    /**
    * 支付时间
    */
    @ApiModelProperty("支付时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date payTime;
    /**
    * 发货时间
    */
    @ApiModelProperty("发货时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date deliveryTime;
    /**
    * 收货时间
    */
    @ApiModelProperty("收货时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date receiveTime;
    /**
    * 评价时间
    */
    @ApiModelProperty("评价时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date commentTime;

    @ApiModelProperty("es索引")
    @TableField(exist = false)
    private String index;

    @ApiModelProperty("es数据id")
    @TableField(exist = false)
    private String eid;


}
